package com.ndood.core.util;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

/**
 * @author taojw
 *
 */
public class WindowUtil {

	/**
	 * 滚动窗口。
	 * 
	 * @param driver
	 * @param height
	 */
	public static void scroll(WebDriver driver, int height) {
		((JavascriptExecutor) driver).executeScript("window.scrollTo(0," + height + " );");
	}

	/**
	 * 重新调整窗口大小，以适应页面，需要耗费一定时间。建议等待合理的时间。
	 * 
	 * @param driver
	 */
	public static void loadAll(WebDriver driver) {
		// 总宽度
		int width = driver.manage().window().getSize().width;
		// 总高度
		long height = (Long) ((JavascriptExecutor) driver).executeScript("return document.body.scrollHeight;");
		// 页面加载超时时间
		driver.manage().timeouts().pageLoadTimeout(90, TimeUnit.SECONDS);
		// 重新设置窗口大小
		driver.manage().window().setSize(new Dimension(width, (int) height));
		// 刷新
		driver.navigate().refresh();
	}

	public static void taskScreenShot(WebDriver driver, File saveFile) {
		File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
		try {
			FileUtils.copyFile(src, saveFile);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 切换标签页
	 * @param driver
	 */
	public static void changeWindow(WebDriver driver) {
		// 获取当前页面句柄
		String handle = driver.getWindowHandle();
		// 获取所有页面的句柄，并循环判断不是当前的句柄，就做选取switchTo()
		for (String handles : driver.getWindowHandles()) {
			if (handles.equals(handle))
				continue;
			driver.switchTo().window(handles);
		}
	}
}